const express = require("express")
const router = express.Router()

// 引入控制层
const testsController = require("../controllers/testsController")
const { body, query } = require("express-validator")
// router.use(function timeLog(req, res, next) {
//     console.log('Time: ', Date.now())
//     //模块路由中检测是否携带了 token
//     if (!req.auth) {
//         return res.send({
//             status: 403,
//             message: "缺少token"
//         });
//     }
//     next()
// })
// 引入中间件
const checkPermission = require('../middleware/checkPermission');
const auth = require('../middleware/auth');
// router路径配置
// 需要的参数：name,type,class_id,date,total_score,write_of,practe_of,meet_of,project_of,all_of
router.post('/add',
    [
        // 验证name，非空，长度至少1
        body('name').notEmpty().withMessage('名称不能为空'),
        // 验证type，非空，长度至少1
        body('type').notEmpty().withMessage('类型不能为空'),
        // 验证class_id，非空，长度至少1
        body('class_id').notEmpty().withMessage('班级ID不能为空'),
        // 验证date，非空，长度至少1
        body('date').notEmpty().withMessage('数据不能为空'),
        // 验证total_score，非空，必须是数字
        body('total_score').notEmpty().isFloat().withMessage('总分必须为数字'),
        // 验证write_of，非空，必须是数字
        body('write_of').notEmpty().isFloat().withMessage('笔试分数必须为数字'),
        // 验证practe_of，非空，必须是数字
        body('practe_of').notEmpty().isFloat().withMessage('实践分数必须为数字'),
        // 验证meet_of，非空，必须是数字
        body('meet_of').notEmpty().isFloat().withMessage('面试分数必须为数字'),
        // 验证project_of，非空，必须是数字
        body('project_of').notEmpty().isFloat().withMessage('项目分数必须为数字'),
        // 验证all_of，非空，必须是数字
        // body('all_of').notEmpty().isFloat().withMessage('总分比例必须为数字')
    ], auth, checkPermission("exam_add"),
    testsController.addtest_c)
router.get("/del_f", auth, checkPermission("exam_delete"), testsController.deltest_f_c)
router.get("/start", auth, checkPermission("exam_delete"), testsController.start)
router.get("/del_t", auth, checkPermission("exam_delete"), testsController.deltest_t_c)
router.get("/get", auth, checkPermission("exam_list"), testsController.edit_get_c)
router.post("/set",
    [
        // 验证name，非空，长度至少1
        body('name').notEmpty().withMessage('名称不能为空'),
        // 验证type，非空，长度至少1
        body('type').notEmpty().withMessage('类型不能为空'),
        // 验证class_id，非空，长度至少1
        body('class_id').notEmpty().withMessage('班级ID不能为空'),
        // 验证date，非空，长度至少1
        body('date').notEmpty().withMessage('数据不能为空'),
        // 验证total_score，非空，必须是数字
        body('total_score').notEmpty().isFloat().withMessage('总分必须为数字'),
        // 验证write_of，非空，必须是数字
        body('write_of').notEmpty().isFloat().withMessage('笔试占比必须为数字'),
        // 验证practe_of，非空，必须是数字
        body('practe_of').notEmpty().isFloat().withMessage('实践占比必须为数字'),
        // 验证meet_of，非空，必须是数字
        body('meet_of').notEmpty().isFloat().withMessage('面试占比必须为数字'),
        // 验证project_of，非空，必须是数字
        body('project_of').notEmpty().isFloat().withMessage('项目占比必须为数字'),
        // 验证all_of，非空，必须是数字
        // body('all_of').notEmpty().isFloat().withMessage('总分占比必须为数字')
    ], auth, checkPermission("exam_edit"),
    testsController.edit_set_c)
router.get("/list",
    [
        query('page_size').optional().toInt(),
        query('page').optional().toInt()
    ], auth, checkPermission("exam_list"),
    testsController.test_list_c)
router.post("/enter",
    // score_write, score_meet, score_practe, score_project, comment
    [
        // 验证score_write，非空，必须是数字
        body('score_write').notEmpty().isFloat().withMessage('笔试分数必须为数字'),
        // 验证score_meet，非空，必须是数字
        body('score_meet').notEmpty().isFloat().withMessage('实践分数必须为数字'),
        // 验证score_practe，非空，必须是数字
        body('score_practe').notEmpty().isFloat().withMessage('面试分数必须为数字'),
        // 验证score_project，非空，必须是数字
        body('score_project').notEmpty().isFloat().withMessage('项目分数必须为数字'),
        // 验证comment，非空，长度至少1
        body('comment').notEmpty().withMessage('评语不能为空'),
    ], auth, checkPermission("exam_set"),
    testsController.score_enter_c
)
router.get("/count", testsController.test_count)
router.get("/total_count", auth, checkPermission("exam_edit"), testsController.total_count)
router.get("/count_average", auth, checkPermission("exam_edit"), testsController.count_average)
router.get("/exam_student", auth, checkPermission("exam_list"), testsController.exam_student)
// 路由导出
module.exports = router